Qanopee: a Medical Appointment Platform
The project involved developing and designing an online booking platform called Qanopee, specialized in medical appointments connected to companies. Qanopee won the French Tech Impact Award, and its mission is to improve quality of life at work by reducing the risks of accidents, occupational diseases, and absenteeism. The practitioners present on the platform belong to scientifically validated and state-recognized professions, and each profile is verified by a person before being published online.
This project started in June 2023, until September 2024. The main challenge was migrating the platform from the no-code solution Bubble to a code-based solution. Given that the MVP (Minimum Viable Product) had already been commercialized, it was imperative to migrate the data while building the new platform in an extremely short timeframe.
The team involved in this project included the CEO of Qanopee, a developer from an IT consulting company (SSII - Société de Services en Ingénierie Informatique), as well as two occasional freelancers.
Tasks & Objectives
In this project, my role was to architect the technical solution, supervise the developer, prioritize developments, thus playing the role of CTO (Chief Technology Officer) and lead developer for the startup. The objective was to produce the new platform in less than 4 months.
The success criteria were to replace the Bubble application with our new code-based solution, while integrating essential features such as the payment module via Stripe, Google Calendar synchronization, and the CMS (Content Management System) aspect at launch.
Actions and Development
My main actions included building a monorepo for the entire project, developing the frontend for individuals on desktop, setting up the foundations of the frontend for practitioners (calendar event synchronization), as well as developing and setting up the backend with Supabase (models and edge functions). I also managed project supervision and development strategy.
The migration process was broken down into several stages: migration of data from Bubble to PostgreSQL / Supabase via ETL (Extract-Transform-Load), development of the frontend for individuals, drawing inspiration from the market leader to optimize TTM (Time To Market), and setting up the frontend for practitioners, at a time when another developer was hired, occasionally accompanied by a freelancer.
In parallel, I modeled and built the backend. Once both developers were fully integrated, I focused on the backend to limit cognitive overload.
I actively worked with the IT consulting company developer to validate his MR (Merge Requests) and monitor his technical choices. I also collaborated with three freelancers specialized respectively in Bubble migration, frontend and Stripe, and setting up a backend in NestJS (Node.js framework), more common and suitable for scalable architectures than Supabase edge functions.
The main challenges were constant pressure and extremely tight deadlines, as well as high expectations with limited resources. From a technical perspective, the challenges included setting up a complex project via a monorepo orchestrated with NX, configuring deployments in Vercel and Supabase, setting up payment flows via Stripe, and synchronization with Google Calendar. I also managed DevOps tasks (automatic deployment with CI/CD and SSL) on Digital Ocean, while being a buffer between developers and the strategic CTO vision. Finally, my focus turned to supervision and code review, with satellite tasks like DevOps or Stripe debugging.
All decisions were made based on minimizing TTM. This influenced the simplicity of the technical stack. Practices such as testing were not implemented from the start to avoid any unnecessary complexity. The choice of Supabase proved crucial, as it offers a standard PostgreSQL database and manages features such as authentication, security, and large file management. Additionally, its flexibility and open-source nature allow for future migration to our own servers if necessary. The Quasar Dev framework based on Vue 3 was also chosen for its simplicity, allowing rapid development of frontend interfaces.
Results
Four months after the start of the project, the platform was online, with features allowing practitioners to obtain SaaS (Software as a Service) subscriptions, individuals to book slots for video consultations, and to pay online. More than 500 practitioners currently use the platform.
This experience was extremely enriching, both technically and humanly. I was able to complete a comprehensive large-scale project, including integration of third-party services like Stripe and Google Calendar. I also supervised, trained, then led another developer, while coordinating the development efforts of a team. Finally, I gained valuable experience in the operation of a young startup.
At the end of my work, Qanopee had:
- A booking application for individuals
- A "CMS" application for healthcare professionals
- A backend managing monetary transactions with Stripe, schedule and calendar management, and integration with Google Calendar
Technical Stack
The project relies on the following tools and technologies:
- Languages : TypeScript/JavaScript, SQL
- Frameworks : Quasar Dev, Vue 3, Supabase, PostgreSQL, Deno, NestJS
- Third-party APIs : Brevo (email and SMS management), Stripe (payment), Google (Calendar and Places)
- Hosting : Supabase, Vercel, Digital Ocean
It is important to note that this technical stack was chosen to minimize TTM. The major technical challenges encountered include:
- Setting up Stripe processes, taking into account as much as possible the edge cases
- Synchronization with Google Calendar via edge functions
- Lack of testing which inevitably led to code regressions, sometimes discovered late